AWS DataSyncで「転送先が更新された場合は転送しない」ということは簡単に対応できるのか確認してみた
「転送先が更新された場合は転送しない」ということはできるのか気になる
こんにちは、のんピ(@non____97)です。
皆さんはAWS DataSyncを使用していて、「転送先が更新された場合は転送しない」ということはできるのか気になったことはありますか? 私はあります。
ファイルサーバーの移行をする場合、転送元と転送先の両方を業務利用する並行稼働期間を設けることがあります。
並行稼働期間中、転送元で変更されたファイルについては、転送先でも変更結果を反映させたいところです。
また、その逆で転送先で変更されたファイルについては、先祖返りを防ぐため転送元と差分があったとしても転送はさせたくありません。
並行稼働期間中に求めるファイル転送の処理を図示すると以下のとおりです。
DataSyncではそのような運用を簡単に行うことが可能でしょうか。
Excludes/Includesや、マニフェストファイルを活用して、転送対象のファイル自体を絞り込むことは可能です。しかし、「このファイルは転送元/転送先のどちらが最新なのか」を正確に把握する必要があります。要するに面倒です。
DataSyncではOverwriteモードを変更することが可能です。
AWSマネジメントコンソール上ではModify or preserve your destination data when your source data (including metadata) changes.
と転送元が変更された場合は転送先を変更すると紹介されていました。
では、こちらを有効/無効に切り替えた場合、実際にどのような挙動をするのでしょうか。
実際に試してみます。
いきなりまとめ
- 直接的に「転送先が変更されている場合は転送しない」というオプションは存在しない
- 「一度転送したものは転送しない」というオプションは存在する (OverwriteMode NEVER)
- 並行稼働期間中はユーザーへ転送方式と転送間隔を合意した上で行おう
やってみる
検証環境
検証環境は以下のとおりです。
以下記事で検証した環境をそのまま再利用します。
DataSyncを用いてWindows Server上のファイルをAmazon FSx for NetApp ONTAP上に転送させます。
検証パターンは以下6パターンです。
No | OverwriteMode | 送信元 | 送信先 | 初回/差分 |
---|---|---|---|---|
1 | ALL | - | - | 新規 |
2 | ALL | 変更 | - | 差分 |
3 | ALL | - | 変更 | 差分 |
4 | NEVER | - | - | 新規 |
5 | NEVER | 変更 | - | 差分 |
6 | NEVER | - | 変更 | 差分 |
なお、AWSマネジメントコンソール上でOverwrite files
がYes
となっている場合はOverwriteMode
がALL
、No
となっている場合はNEVER
となります。
OverwriteMode ALL × 初回転送
まずはパターン1の「OverwriteMode ALL × 初回転送」のパターンです。
転送元に以下のようなファイルを用意しました。
> cat "C:\SMB share\datasync-test\test.txt"
test
作成したDataSyncのタスクは以下のとおりです。
AWS CLIで表示すると以下のとおりです。
> aws datasync describe-task --task-arn arn:aws:datasync:us-east-1:<AWSアカウントID>:task/task-0e1ac90e1ec13d274
{
"TaskArn": "arn:aws:datasync:us-east-1:<AWSアカウントID>:task/task-0e1ac90e1ec13d274",
"Status": "AVAILABLE",
"Name": "",
"SourceLocationArn": "arn:aws:datasync:us-east-1:<AWSアカウントID>:location/loc-0d16e63c68b382cbe",
"DestinationLocationArn": "arn:aws:datasync:us-east-1:<AWSアカウントID>:location/loc-0f225cde44f230420",
"CloudWatchLogGroupArn": "arn:aws:logs:us-east-1:<AWSアカウントID>:log-group:/aws/datasync",
"SourceNetworkInterfaceArns": [],
"DestinationNetworkInterfaceArns": [
"arn:aws:ec2:us-east-1:<AWSアカウントID>:network-interface/eni-010d2fc89b95776b4",
"arn:aws:ec2:us-east-1:<AWSアカウントID>:network-interface/eni-01a57abb18bb047a3",
"arn:aws:ec2:us-east-1:<AWSアカウントID>:network-interface/eni-03430a68c6420fb78",
"arn:aws:ec2:us-east-1:<AWSアカウントID>:network-interface/eni-06145573249a1df74"
],
"Options": {
"VerifyMode": "ONLY_FILES_TRANSFERRED",
"OverwriteMode": "ALWAYS",
"Atime": "BEST_EFFORT",
"Mtime": "PRESERVE",
"Uid": "NONE",
"Gid": "NONE",
"PreserveDeletedFiles": "PRESERVE",
"PreserveDevices": "NONE",
"PosixPermissions": "NONE",
"BytesPerSecond": -1,
"TaskQueueing": "ENABLED",
"LogLevel": "TRANSFER",
"TransferMode": "CHANGED",
"SecurityDescriptorCopyFlags": "OWNER_DACL",
"ObjectTags": "PRESERVE"
},
"Excludes": [],
"CreationTime": "2024-11-25T14:08:01.211000+09:00",
"Includes": [],
"TaskMode": "BASIC"
}
DataSyncタスク実行後の状態を確認します。
2つのファイルが転送されていることが分かりますね。
CloudWatch Logsを確認すると、/
と/test.txt
が転送されたことが分かります。要するにディレクトリである/
もファイル扱いになっています。
[INFO] Request to start task-0e1ac90e1ec13d274.
[INFO] Execution exec-06a82a46995589133 started.
[INFO] Started logging in destination hostId: host-0667edd79d81c437e for Execution exec-06a82a46995589133
[INFO] Started logging in destination hostId: host-0718ab1f4f3124d49 for Execution exec-06a82a46995589133
[INFO] Started logging in destination hostId: host-0955a65b6f5dd94c6 for Execution exec-06a82a46995589133
[INFO] Started logging in destination hostId: host-0f536694a0c80f2c5 for Execution exec-06a82a46995589133
[NOTICE] Transferred file /test.txt, 4 bytes
[NOTICE] Transferred directory metadata /
[NOTICE] Verified directory /
[NOTICE] Verified file /test.txt, 4 bytes
[INFO] Execution exec-06a82a46995589133 finished with status Success.
転送先のファイルを確認すると、確かに同じ内容のファイルが転送されていました。
> cat \\SMB-SERVER.corp.non-97.net\vol_ntfs_dst\test.txt
test
OverwriteMode ALL × 転送元のみ変更 × 差分転送
次にパターン2の「OverwriteMode ALL × 転送元のみ変更 × 差分転送」のパターンです。
転送元のファイルに以下のように1行追記しました。
> cat "C:\SMB share\datasync-test\test.txt"
test
source change
この状態でDataSyncタスクを再実行します。
DataSyncタスク実行後の状態を確認します。
1つのファイルが転送されていることが分かります。
CloudWatch Logsを確認すると、/test.txt
が転送されたことが分かります。
[INFO] Request to start task-0e1ac90e1ec13d274.
[INFO] Execution exec-0b98c9cc5a0e84c39 started.
[INFO] Started logging in destination hostId: host-046ef62fc8403e3b2 for Execution exec-0b98c9cc5a0e84c39
[INFO] Started logging in destination hostId: host-0957b6d0cab12c179 for Execution exec-0b98c9cc5a0e84c39
[INFO] Started logging in destination hostId: host-0a1e263ae06d072e6 for Execution exec-0b98c9cc5a0e84c39
[INFO] Started logging in destination hostId: host-0ccf9b1b721d8bff6 for Execution exec-0b98c9cc5a0e84c39
[NOTICE] Transferred file /test.txt, 19 bytes
[NOTICE] Verified file /test.txt, 19 bytes
[INFO] Execution exec-0b98c9cc5a0e84c39 finished with status Success.
転送先のファイルを確認すると、確かにファイルの内容が転送元と同じものになっていました。
cat \\SMB-SERVER.corp.non-97.net\vol_ntfs_dst\test.txt
test
source change
OverwriteMode ALL × 転送先のみ変更 × 差分転送
次にパターン3の「OverwriteMode ALL × 転送先のみ変更 × 差分転送」のパターンです。
転送先のファイルに以下のように1行追記しました。
> cat \\SMB-SERVER.corp.non-97.net\vol_ntfs_dst\test.txt
test
source change
destination change
この状態でDataSyncタスクを再実行します。
DataSyncタスク実行後の状態を確認します。
1つのファイルが転送されていることが分かります。
CloudWatch Logsを確認すると、/test.txt
が転送されたことが分かります。
[INFO] Request to start task-0e1ac90e1ec13d274.
[INFO] Execution exec-091e6994af0c68e50 started.
[INFO] Started logging in destination hostId: host-02e6bf6e6cca9a89e for Execution exec-091e6994af0c68e50
[NOTICE] Transferred file /test.txt, 19 bytes
[NOTICE] Verified file /test.txt, 19 bytes
[INFO] Execution exec-091e6994af0c68e50 finished with status Success.
転送先のファイルを確認すると、転送元と同じ内容になっていました。
> cat \\SMB-SERVER.corp.non-97.net\vol_ntfs_dst\test.txt
test
source change
要するに先祖返りしてしまっています。
OverwriteMode
をALL
にすると、転送先の方が新しくても古い転送元で上書きされてしまうので、並行稼働期間中に使用することはできないでしょう。
継続的に差分同期する際には有用であるため、並行稼働を設けるような移行ではなく、管理者側でメンテナンス時間に一括でカットオーバーするような移行で活躍します。
OverwriteMode NEVER × 初回転送
次にパターン4の「OverwriteMode NEVER × 初回転送」のパターンです。
以下のように"OverwriteMode": "NEVER"
となるように変更しました。
> aws datasync describe-task --task-arn arn:aws:datasync:us-east-1:<AWSアカウントID>:task/task-0e1ac90e1ec13d274 --query 'Options'
{
"VerifyMode": "ONLY_FILES_TRANSFERRED",
"OverwriteMode": "NEVER",
"Atime": "BEST_EFFORT",
"Mtime": "PRESERVE",
"Uid": "NONE",
"Gid": "NONE",
"PreserveDeletedFiles": "PRESERVE",
"PreserveDevices": "NONE",
"PosixPermissions": "NONE",
"BytesPerSecond": -1,
"TaskQueueing": "ENABLED",
"LogLevel": "TRANSFER",
"TransferMode": "CHANGED",
"SecurityDescriptorCopyFlags": "OWNER_DACL",
"ObjectTags": "PRESERVE"
}
転送元に新しくtest2.txt
というファイルを用意しています。
> cat "C:\SMB share\datasync-test\test2.txt"
test2.txt
この状態でDataSyncタスクを再実行します。
DataSyncタスク実行後の状態を確認します。
1つのファイルが転送されていることが分かります。
CloudWatch Logsを確認すると、/test2.txt
が転送されたことが分かります。
[INFO] Request to start task-0e1ac90e1ec13d274.
[INFO] Execution exec-0d7afb64d7bc8fe89 started.
[INFO] Started logging in destination hostId: host-03baf82173ae7f7c9 for Execution exec-0d7afb64d7bc8fe89
[NOTICE] Transferred file /test2.txt, 9 bytes
[NOTICE] Transferred directory metadata /
[NOTICE] Verified file /test2.txt, 9 bytes
[INFO] Execution exec-0d7afb64d7bc8fe89 finished with status Success.
転送先のファイルを確認すると、確かにファイルの内容が転送元と同じファイルが転送されています。
> cat \\SMB-SERVER.corp.non-97.net\vol_ntfs_dst\test2.txt
test2.txt
OverwriteMode NEVER × 転送元のみ変更 × 差分転送
次にパターン5の「OverwriteMode NEVER × 転送元のみ変更 × 差分転送」のパターンです。
転送元のファイルに以下のように1行追記しました。
> cat "C:\SMB share\datasync-test\test2.txt"
test2.txt
source change
この状態でDataSyncタスクを再実行します。
DataSyncタスク実行後の状態を確認します。
ファイルが転送されていなさそうですね。
CloudWatch Logsにもファイル転送の形跡はありません。
[INFO] Request to start task-0e1ac90e1ec13d274.
[INFO] Execution exec-0c72e9bf66ac2f76a started.
[INFO] Started logging in destination hostId: host-04e9ca94cffd622bb for Execution exec-0c72e9bf66ac2f76a
[INFO] Execution exec-0c72e9bf66ac2f76a finished with status Success.
転送先のファイルを確認すると、確かにファイルの内容が変わっていないことが分かります。
> cat \\SMB-SERVER.corp.non-97.net\vol_ntfs_dst\test2.txt
test2.txt
このことから、並行稼働期間中には適しているかもしれませんが、並行稼働期間中前の継続的な差分同期を行うタイミングにおいては向いていないことが分かります。
OverwriteMode NEVER × 転送先のみ変更 × 差分転送
最後にパターン6の「OverwriteMode NEVER × 転送先のみ変更 × 差分転送」のパターンです。
転送先のファイルに以下のように1行追記しました。
> cat \\SMB-SERVER.corp.non-97.net\vol_ntfs_dst\test2.txt
test2.txt
destination change
この状態でDataSyncタスクを再実行します。
DataSyncタスク実行後の状態を確認します。
はい、ファイルが転送されていないようです。CloudWatch Logsにもファイル転送の形跡はありません。
[INFO] Request to start task-0e1ac90e1ec13d274.
[INFO] Execution exec-00bbed7260424addc started.
[INFO] Started logging in destination hostId: host-058d6cc788f27e8bf for Execution exec-00bbed7260424addc
[INFO] Execution exec-00bbed7260424addc finished with status Success.
転送先ファイルを確認しても、特にファイルの内容は転送元のファイルの内容で上書きはされていません。
> cat \\SMB-SERVER.corp.non-97.net\vol_ntfs_dst\test2.txt
test2.txt
destination change
OverwriteMode NEVER × 転送元ファイル削除 × PreserveDeletedFiles REMOVE
ふと、OverwriteMode NEVERとPreserveDeletedFiles REMOVEの相性が気になったので確認してみます。
PreserveDeletedFiles REMOVEは転送元から削除されたファイルを転送先でも削除するオプションです。
OverwriteMode NEVERとPreserveDeletedFiles REMOVEを同時に設定することは可能でしょうか。
まず、転送元からファイルを削除します。
> cat "C:\SMB share\datasync-test\test2.txt"
cat : Cannot find path 'C:\SMB share\datasync-test\test2.txt' because it does not exist.
At line:1 char:1
+ cat "C:\SMB share\datasync-test\test2.txt"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (C:\SMB share\datasync-test\test2.txt:String) [Get-Content], ItemNotFoun
dException
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetContentCommand
DataSyncタスクでPreserveDeletedFiles REMOVEに変更します。。
> aws datasync describe-task --task-arn arn:aws:datasync:us-east-1:<AWSアカウントID>:task/task-0e1ac90e1ec13d274 --query 'Options'
{
"VerifyMode": "ONLY_FILES_TRANSFERRED",
"OverwriteMode": "NEVER",
"Atime": "BEST_EFFORT",
"Mtime": "PRESERVE",
"Uid": "NONE",
"Gid": "NONE",
"PreserveDeletedFiles": "REMOVE",
"PreserveDevices": "NONE",
"PosixPermissions": "NONE",
"BytesPerSecond": -1,
"TaskQueueing": "ENABLED",
"LogLevel": "TRANSFER",
"TransferMode": "CHANGED",
"SecurityDescriptorCopyFlags": "OWNER_DACL",
"ObjectTags": "PRESERVE"
}
この状態でDataSyncタスクを再実行します。
DataSyncタスク実行後の状態を確認します。
Deleted from destination
が0 files
であることからファイルは削除されていないようです。CloudWatch Logsにもファイル削除の形跡はありません。
[INFO] Request to start task-0e1ac90e1ec13d274.
[INFO] Execution exec-061e35f726b56c706 started.
[INFO] Started logging in destination hostId: host-06adb3197f40e2004 for Execution exec-061e35f726b56c706
[INFO] Execution exec-061e35f726b56c706 finished with status Success.
転送先を確認しても、ファイルは健在です。
> cat \\SMB-SERVER.corp.non-97.net\vol_ntfs_dst\test2.txt
test2.txt
destination change
ということで、PreserveDeletedFiles REMOVEにしたとしても、OverwriteMode NEVERの場合は動作しないことが分かります。
ちなみにOverwriteMode ALLの場合意図したとおりに転送元に存在しないファイルは転送先からも削除されます。
> cat \\SMB-SERVER.corp.non-97.net\vol_ntfs_dst\test2.txt
cat : Cannot find path '\\SMB-SERVER.corp.non-97.net\vol_ntfs_dst\test2.txt' because it does not exist.
At line:1 char:1
+ cat \\SMB-SERVER.corp.non-97.net\vol_ntfs_dst\test2.txt
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (\\SMB-SERVER.co...s_dst\test2.txt:String) [Get-Content], ItemNotFoundEx
ception
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetContentCommand
[INFO] Request to start task-0e1ac90e1ec13d274.
[INFO] Execution exec-0ba5971fa37071f00 started.
[INFO] Started logging in destination hostId: host-026f570e1a5e9d129 for Execution exec-0ba5971fa37071f00
[NOTICE] Removed /6zcpY3VH0rgErX87LWz7roZGNb7CxMwabMxJkfnk1fYrQpoVbSpdtkGuGapCJC4aDrTINtwJkZ7cVLVApzi6lfNDVk1Yo0lZp3KWi4VhVttkJjMGlkBuLg2mtfmmJlKflWlM5MFHQTZsr8Aa066UhgCXEx98xZoeDZv1NFXcf40gZ3cTXcnjSDr2wVa2UobtgvbQaeSmuxB7gWk74Na3
[NOTICE] Removed /fio/fio_noencrypt_randwrite_64KiB_block_1GiB_4jobs.0.0
[NOTICE] Removed /SMB share/SMB日本語フォルダ/このファイル名は文字数128文字、UTF-8で180バイトで、UTF-16LEで256バイトだあ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!.txt
[NOTICE] Removed /fio/fio_encrypt_randwrite_1MiB_block_1GiB_4jobs.2.0
[NOTICE] Removed /dir1/test2.txt
[NOTICE] Removed /6zcpY3VH0rgErX87LWz7roZGNb7CxMwabMxJkfnk1fYrQpoVbSpdtkGuGapCJC4aDrTINtwJkZ7cVLVApzi6lfNDVk1Yo0lZp3KWi4VhVttkJjMGlkBuLg2mtfmmJlKflWlM5MFHQTZsr8Aa066UhgCXEx98xZoeDZv1NFXcf40gZ3cTXcnjSDr2wVa2UobtgvbQaeSmuxB7gWk74Na37Im4o0py.txt
[NOTICE] Removed /SMB share/SMB日本語フォルダ/このディレクトリ名は文字数99文字、UTF-8で255バイ
[NOTICE] Removed /SMB share/SMB日本語フォルダ/SMB テキスト.txt
[NOTICE] Removed /f2ca1bb6c7e907d06dafe4687e579fce76b37e4e93b7605022da52e6ccc26fd2f2ca1bb6c7e907d06dafe4687e579fce76b37e4e93b7605022da52e6ccc26fd2f2ca1bb6c7e907d06dafe4687e579fce76b37e4e93b7605022da52e6ccc26fd2f2ca1bb6c7e907df2ca1bb6c7e907d06dafe4687e579fce76b37e4e93b7.txt
[NOTICE] Removed /fio/fio_noencrypt_randwrite_1MiB_block_1GiB_4jobs.1.0
[NOTICE] Removed /fio/fio_encrypt_randwrite_64KiB_block_1GiB_4jobs.2.0
[NOTICE] Removed /fio/fio_noencrypt_randwrite_64KiB_block_1GiB_4jobs.1.0
[NOTICE] Removed /New Text Document.txt
[NOTICE] Removed /fio/fio_encrypt_randwrite_1MiB_block_1GiB_4jobs.3.0
[NOTICE] Removed /fio/fio_encrypt_randwrite_64KiB_block_1GiB_4jobs.3.0
[NOTICE] Removed /fio/fio_noencrypt_randwrite_1MiB_block_1GiB_4jobs.2.0
[NOTICE] Removed /fio/fio_noencrypt_randwrite_64KiB_block_1GiB_4jobs.3.0
[NOTICE] Removed /SMB share/SMB share
[NOTICE] Removed /fio/fio_encrypt_randwrite_256KiB_block_1GiB_4jobs.0.0
[NOTICE] Removed /SMB share/SMB share/SMB日本語フォルダ
[NOTICE] Removed /SMB share/SMB share/SMB日本語フォルダ/SMB テキスト.txt
[NOTICE] Removed /SMB share/test.txt
[NOTICE] Removed /fio/fio_noencrypt_randread_4KiB_block_1GiB_4jobs.0.0
[NOTICE] Removed /New folder_6zcpY3VH0rgErX87LWz7roZGNb7CxMwabMxJkfnk1fYrQpoVbSpdtkGuGapCJC4aDrTINtwJkZ7cVLVApzi6lfNDVk1Yo0lZp3KWi4VhVttkJjMGlkBuLg2mtfmmJlKflWlM5MFHQTZsr8Aa066UhgCXEx98xZoeDZv1NFXcf40gZ3cTXcnjSDr2wVa2UobtgvbQaeSmu
[NOTICE] Removed /New folder_6zcpY3VH0rgErX87LWz7roZGNb7CxMwabMxJkfnk1fYrQpoVbSpdtkGuGapCJC4aDrTINtwJkZ7cVLVApzi6lfNDVk1Yo0lZp3KWi4VhVttkJjMGlkBuLg2mtfmmJlKflWlM5MFHQTZsr8Aa066UhgCXEx98xZoeDZv1NFXcf40gZ3cTXcnjSDr2wVa2UobtgvbQaeSmu/New Text Document.txt
[NOTICE] Removed /fio/fio_noencrypt_randwrite_1MiB_block_1GiB_4jobs.3.0
[NOTICE] Removed /fio/fio_encrypt_randwrite_256KiB_block_1GiB_4jobs.1.0
[NOTICE] Removed /SMB share/test2.txt
[NOTICE] Removed /fio/fio_noencrypt_randread_4KiB_block_1GiB_4jobs.1.0
[NOTICE] Removed /SMB share/test3.txt
[NOTICE] Removed /fio/fio_noencrypt_randwrite_256KiB_block_1GiB_4jobs.0.0
[NOTICE] Removed /fio/fio_encrypt_randwrite_256KiB_block_1GiB_4jobs.2.0
[NOTICE] Removed /fio/fio_noencrypt_randread_4KiB_block_1GiB_4jobs.2.0
[NOTICE] Removed /fio/fio_noencrypt_randwrite_256KiB_block_1GiB_4jobs.1.0
[NOTICE] Removed /fio/fio_encrypt_randwrite_256KiB_block_1GiB_4jobs.3.0
[NOTICE] Removed /qtree1_renamed2
[NOTICE] Removed /qtree1_renamed2/New folder
[NOTICE] Removed /fio/fio_noencrypt_randread_4KiB_block_1GiB_4jobs.3.0
[NOTICE] Removed /fio/fio_noencrypt_randwrite_256KiB_block_1GiB_4jobs.2.0
[NOTICE] Removed /fio/fio_encrypt_randwrite_4KiB_block_1GiB_4jobs.0.0
[NOTICE] Removed /SMB share/SMB日本語フォルダ/このディレクトリ名は文字数99文字、UTF-8で255バイトだあああああああああああああああああああああああああああああああああああああああああああああああああああああああああ!!!!!!!!!!!
[NOTICE] Removed /fio/fio_noencrypt_randwrite_16KiB_block_1GiB_4jobs.0.0
[NOTICE] Removed /fio/fio_noencrypt_randwrite_256KiB_block_1GiB_4jobs.3.0
[NOTICE] Removed /SMB share/SMB日本語フォルダ/このディレクトリ名は文字数99文字、UTF-8で255バイトだあああああああああああああああああああああああああああああああああああああああああああああああああああああああああ!!!!!!!!!!!/このディレクトリ名は文字数99文字、UTF-8で255バイトだああああああああああああああああああああああああああああああああああああああああああああああああああああ
[NOTICE] Removed /SMB share/SMB日本語フォルダ/このディレクトリ名は文字数99文字、UTF-8で255バイトだあああああああああああああああああああああああああああああああああああああああああああああああああああああああああ!!!!!!!!!!!/このディレクトリ名は文字数99文字、UTF-8で255バイトだああああああああああああああああああああああああああああああああああああああああああああああああああああ/このファイル名は文字数109文字、UTF-8で255バイトで、UTF-16LEで218バイトだああああああああああああああああああああああああああああああああああああああああああああああああ!!!!!!!!!!.txt
[NOTICE] Removed /SMB share/SMB日本語フォルダ/このディレクトリ名は文字数99文字、UTF-8で255バイトだあああああああああああああああああああああああああああああああああああああああああああああああああああああああああ!!!!!!!!!!!/このディレクトリ名は文字数99文字、UTF-8で255バイトだあああああああああああああああああああああああああああああああああああああああああああああああああああああああああ!!!!!!!!
[NOTICE] Removed /SMB share/SMB日本語フォルダ/このディレクトリ名は文字数99文字、UTF-8で255バイトだあああああああああああああああああああああああああああああああああああああああああああああああああああああああああ!!!!!!!!!!!/このディレクトリ名は文字数99文字、UTF-8で255バイトだあああああああああああああああああああああああああああああああああああああああああああああああああああああああああ!!!!!!!!/このファイル名は文字数109文字、UTF-8で255バイトで、UTF-16LEで218バイトだああああああああああああああああああああああああああああああああああああああああああああああああ!!!!!!!!!!.txt
[NOTICE] Removed /SMB share/SMB日本語フォルダ/このディレクトリ名は文字数99文字、UTF-8で255バイトだあああああああああああああああああああああああああああああああああああああああああああああああああああああああああ!!!!!!!!!!!/このディレクトリ名は文字数99文字、UTF-8で255バイトだあああああああああああああああああああああああああああああああああああああああああああああああああああああああああ!!!!!!!!!!!
[NOTICE] Removed /SMB share/SMB日本語フォルダ/このディレクトリ名は文字数99文字、UTF-8で255バイトだあああああああああああああああああああああああああああああああああああああああああああああああああああああああああ!!!!!!!!!!!/このディレクトリ名は文字数99文字、UTF-8で255バイトだあああああああああああああああああああああああああああああああああああああああああああああああああああああああああ!!!!!!!!!!!/このファイル名は文字数109文字、UTF-8で255バイトで、UTF-16LEで218バイトだああああああああああああああああああああああああああああああああああああああああああああああああ!!!!!!!!!!.txt
[NOTICE] Removed /SMB share/SMB日本語フォルダ/このディレクトリ名は文字数99文字、UTF-8で255バイトだあああああああああああああああああああああああああああああああああああああああああああああああああああああああああ!!!!!!!!!!!/このファイル名は文字数109文字、UTF-8で255バイトで、UTF-16LEで218バイトだああああああああああああああああああああああああああああああああああああああああああああああああ!!!!!!!!!!.txt
[NOTICE] Removed /fio/fio_encrypt_randwrite_4KiB_block_1GiB_4jobs.1.0
[NOTICE] Removed /SMB share/SMB日本語フォルダ/このファイル名は文字数108文字、UTF-8で254バイトで、UTF-16LEで216バイトだああああああああああああああああああああああああああああああああああああああああああああああああ!!!!!!!!!.txt
[NOTICE] Removed /SMB share/SMB日本語フォルダ/このファイル名は文字数109文字、UTF-8で255バイトで、UTF-16LEで218バイトだああああああああああああああああああああああああああああああああああああああああああああああああ!!!!!!!!!!.txt
[NOTICE] Removed /fio/fio_noencrypt_randwrite_16KiB_block_1GiB_4jobs.1.0
[NOTICE] Removed /dir1
[NOTICE] Removed /SMB share/SMB日本語フォルダ/このファイル名は文字数127文字、UTF-8で179バイトで、UTF-16LEで254バイトだあ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!.txt
[NOTICE] Removed /dir1/dir2
[NOTICE] Removed /dir1/dir2/test3.txt
[NOTICE] Removed /dir1/dir2/fsutil_8GiB.txt
[NOTICE] Removed /fio/fio_noencrypt_randwrite_4KiB_block_1GiB_4jobs.0.0
[NOTICE] Removed /fio/fio_encrypt_randwrite_4KiB_block_1GiB_4jobs.2.0
[NOTICE] Removed /fio/fio_noencrypt_randwrite_16KiB_block_1GiB_4jobs.2.0
[NOTICE] Removed /fio/fio_noencrypt_randwrite_4KiB_block_1GiB_4jobs.1.0
[NOTICE] Removed /qtree2_renamed2
[NOTICE] Removed /fio/fio_encrypt_randwrite_4KiB_block_1GiB_4jobs.3.0
[NOTICE] Removed /qtree2_renamed2/dir
[NOTICE] Removed /fio/fio_noencrypt_randwrite_16KiB_block_1GiB_4jobs.3.0
[NOTICE] Removed /fio/fio_noencrypt_randwrite_4KiB_block_1GiB_4jobs.2.0
[NOTICE] Removed /fio/fio_encrypt_randwrite_64KiB_block_1GiB_4jobs.0.0
[NOTICE] Removed /fio/fio_noencrypt_randwrite_1MiB_block_1GiB_4jobs.0.0
[NOTICE] Removed /fio/fio_noencrypt_randwrite_4KiB_block_1GiB_4jobs.3.0
[NOTICE] Removed /fio/fio_encrypt_randwrite_64KiB_block_1GiB_4jobs.1.0
[NOTICE] Removed /test2.txt
[NOTICE] Removed /fio/SMB-SERVER.corp.non-97.net/share
[NOTICE] Removed /qtree3/SMB31_unencrypt_unsign_kerb.pcapng
[NOTICE] Removed /qtree3/test2.txt
[NOTICE] Removed /SMB share/SMB日本語フォルダ/このディレクトリ名は文字数99文字、UTF-8で254バイトだあああああああああああああああああああああああああああああああああああああああああああああああああああああああああ!!!!!!!!!!
[NOTICE] Removed /SMB share/SMB日本語フォルダ
[NOTICE] Removed /SMB share/SMB日本語フォルダ/このディレクトリ名は文字数99文字、UTF-8で254バイトだあああああああああああああああああああああああああああああああああああああああああああああああああああああああああ!!!!!!!!!!/このディレクトリ名は文字数99文字、UTF-8で254バイトだあああああああああああああああああああああああああああああああああああああああああああああああああああああああああ!!!!!!!!!!
[NOTICE] Removed /SMB share/SMB日本語フォルダ/このディレクトリ名は文字数99文字、UTF-8で254バイトだあああああああああああああああああああああああああああああああああああああああああああああああああああああああああ!!!!!!!!!!/このディレクトリ名は文字数99文字、UTF-8で254バイトだあああああああああああああああああああああああああああああああああああああああああああああああああああああああああ!!!!!!!!!!/このファイル名は文字数109文字、UTF-8で255バイトで、UTF-16LEで218バイトだああああああああああああああああああああああああああああああああああああああああああああああああ!!!!!!!!!!.txt
[NOTICE] Removed /fio/SMB-SERVER.corp.non-97.net/share/fio
[NOTICE] Removed /SMB share/.aws-datasync
[NOTICE] Removed /fio/fio_encrypt_randwrite_16KiB_block_1GiB_4jobs.0.0
[NOTICE] Removed /fio/fio_encrypt_randwrite_16KiB_block_1GiB_4jobs.1.0
[NOTICE] Removed /fio/fio_encrypt_randwrite_16KiB_block_1GiB_4jobs.2.0
[NOTICE] Removed /fio/fio_encrypt_randwrite_16KiB_block_1GiB_4jobs.3.0
[NOTICE] Removed /qtree3
[NOTICE] Removed /fio/fio_encrypt_randwrite_1MiB_block_1GiB_4jobs.0.0
[NOTICE] Removed /SMB share
[NOTICE] Removed /fio/fio_encrypt_randwrite_1MiB_block_1GiB_4jobs.1.0
[NOTICE] Removed /fio/SMB-SERVER.corp.non-97.net
[NOTICE] Removed /fio
[NOTICE] Transferred directory metadata /
[NOTICE] Verified directory /
[INFO] Execution exec-0ba5971fa37071f00 finished with status Success.
並行稼働期間中はOverwriteModeをNEVERに変更しよう
AWS DataSyncで「転送先が更新された場合は転送しない」ということは簡単に対応できるのか確認してみました。
結論、簡単にはできません。
OverwriteMode
をNEVER
に変更した場合、確かに先祖返りを防ぐことは可能です。しかし、性質として、新規にファイルを作成した分は転送されますが、以降は転送されません。
OverwriteMode
がNEVER
かつ PreserveDeletedFiles
がREMOVE
の挙動を図示すると以下のとおりです。
活用するとしたら、並行稼働期間中前の継続的な差分同期を行うタイミングではALL
にし、並行稼働期間になったタイミングでNEVER
に変更する形になると考えます。
ただし、並行稼働期間中に転送済みのファイルは再転送されません。転送元を更新してしまった場合は、手動で転送先にも反映させる必要があります。
そのため、いくら並行稼働をしていると言っても、転送先側をメインに更新していかなければ、転送元には転送先に反映できていない変更差分が貯まる一方です。
結果として、並行稼働期間を長く取る場合は、手動反映のオペレーションコストが高くなると考えます。
並行稼働期間中における転送方式や転送間隔についてユーザーへ周知しておきましょう。場合によっては並行稼働期間を設けずに切り替える方がユーザ部門にとっても切替コストが低くなるかもしれません。
この記事が誰かの助けになれば幸いです。
以上、AWS事業本部 コンサルティング部の のんピ(@non____97)でした!